﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Persistencia.Repositorios;
using Entidades;
using Common;

namespace Controladores
{
    public class UsuarioControlador
    {
        readonly UsuarioRepositorio _usuarioRepositorio = new UsuarioRepositorio();
        
        /// <summary>
        /// Devuelve un Usuario según su Id
        /// </summary>
        /// <param name="Id_Usuario"></param>
        /// <returns></returns>
        public Usuario ObtenerUsuario(int Id_Usuario)
        {
            return _usuarioRepositorio.ObtenerUsuario(Id_Usuario);
        }
    
        /// <summary>
        /// Obtiene un Usuario según un Nombre de Usuario y Password
        /// </summary>
        /// <param name="nombreUsuario"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public Usuario ObtenerPorUsuarioYPassword(string nombreUsuario, string password)
        {
            return _usuarioRepositorio.ObtenerPorUsuarioYPassword(nombreUsuario, password);
        }

        /// <summary>
        /// Deuelve todos los Usuarios correspondientes a un Tipo
        /// </summary>
        /// <param name="tipo"></param>
        /// <returns></returns>
        public List<Usuario> ObtenerUsuariosPorTipo(string tipo)
        {
            List<Usuario> usuarios = new List<Usuario>();
            try
            {
                usuarios = _usuarioRepositorio.ObtenerUsuariosPorTipo(tipo);
            }
            catch (Exception)
            {
                throw;
            }
            return usuarios;
        }

        /// <summary>
        /// Deuelve todos los Usuarios correspondientes a una Categoría
        /// </summary>
        /// <param name="categoria"></param>
        /// <returns></returns>
        public List<Usuario> ObtenerUsuariosPorCategoria(string categoria)
        {
            List<Usuario> usuarios = new List<Usuario>();
            try
            {
                usuarios = _usuarioRepositorio.ObtenerUsuariosPorCategoria(categoria);
            }
            catch (Exception)
            {
                throw;
            }
            return usuarios;
        }

        ///// <summary>
        ///// Devuelve la cantidad total de Usuarios, según un filtro
        ///// </summary>
        ///// <param name="filtro"></param>
        ///// <returns></returns>
        //public int ObtenerTotalUsuarios(string filtro)
        //{
        //    try
        //    {
        //        return _usuarioRepositorio.ObtenerTotalUsuarios(filtro);
        //    }
        //    catch (Exception ex)
        //    {
        //        throw ex;
        //    }
        //}

        ///// <summary>
        ///// Devuelve una lista de todas los Usuarios, según un filtro y paginación
        ///// </summary>
        ///// <param name="paginacion"></param>
        ///// <param name="filtro"></param>
        ///// <returns></returns>
        //public List<Usuario> ObtenerUsuarios(Pagination paginacion, string filtro)
        //{
        //    List<Usuario> entidades = new List<Usuario>();
        //    try
        //    {
        //        entidades = _usuarioRepositorio.ObtenerUsuarios(paginacion, filtro);
        //    }
        //    catch (Exception)
        //    {
        //        throw;
        //    }
        //    return entidades;
        //}
    }
}
